// 普通的回调函数
// 设计参数(err, ...args)
function onloadImg(url, cb) {
    const imgNode = document.createElement('img')
    imgNode.src = url
    imgNode.onerror = (err) => cb(err)
    imgNode.onlaod = () => cb(null, imgNode)
}
// 在cb里可以根据拿到的参数，判断情况进而进行合适的操作
function onloadImgPromise(imgUrl) {
    return new Promise((resolve, reject) => {
        onloadImg(imgUrl, (err, ...args) => {
            if (err) {
                reject(err)
                return
                resolve(args)
            }
        })
    })
}
// promisify -- 接收保证的函数 -- 传参调用函数 返回一个promise
function promisify(originalFn) {
    return function (...args) {
        originalFn(...args, () => {
            return new Promise((resolve, reject) => {
                if (err) {
                    reject(err)
                    return
                }
                resolve(args)
            })
        })
    }
}